import { defineStore } from "pinia";
import { UserState } from "./types";
import pinia from "@/store";
import { userLoginApi, getUserDataApi } from "@/api/user";
import { localCache } from "@/utils/cache";
import router from "@/router";
import { ElMessage } from "element-plus";
import { CACHE_TOKEN } from "@/global/constants";

export const useUserStoreHook = defineStore("User", {
  state: () => ({
    userInfo: {},
    token: localCache.getCache(CACHE_TOKEN) || "",
  }),
  getters: {},
  actions: {
    // 登录接口调用
    async UserloginAction(data) {
      // 1.获取登录接口返回token值
      const tokenRes = await userLoginApi(data);
      // 将token保存到状态管理中
      this.token = tokenRes;
      // 持久化缓存token，并返回结果
      localCache.setCache(CACHE_TOKEN, tokenRes);
      // 登录成功后提示信息提示，并跳转到首页
    },
    // 获取用户信息接口调用
    async GetUserDataAction() {
      // 2.获取登录用户信息
      const UserDataRes = await getUserDataApi();
      this.userInfo = UserDataRes;
      return UserDataRes; // 返回用户信息，用于在其他地方使用
    },
    // 退出登录
    logoutAction() {
      // 删除token
      // 清空用户信息，重置为空对象
      // 重置路由
    },
  },
  // 持久化保存 accessToken
  // persist: {
  //   key: "userInfo", //存储名称
  //   storage: sessionStorage, //存储方式
  //   paths: ["accessToken"], //需要持久化的字段
  // },
});

// 导出该Store
// export function useUserStore() {
//   return useUserStoreHook(pinia);
// }

export default useUserStoreHook;
